package com.Questions.bit_manipulation;

public class leetcode137 {
    public int singleNumber(int[] nums) {
        int ans = 0;
        for (int i = 0; i < 32; ++i) {
            int total = 0;
            for (int num: nums) {
                // 将第i位的数字进行合并
                // &1 的操作将i位之后的数字去掉了
                total += ((num >> i) & 1);
            }
            // 答案的 这一位不是 0 需要增加一个1
            if (total % 3 != 0) {
                // |的操作保留了i位之前的数字
                ans |= (1 << i);
            }
        }
        return ans;
    }

}
